主题
本页是 CodeAgent CLI 的整体设计:分层架构、三种执行模式的关系与 23 期演进脉络。模块深挖见 ReAct和tool call / plan和DAG / Memory系统 / Multi-Agent / RAG代码检索 / 人工审批 / 多并发 / 联网搜索 / 接入MCP / DevTools MCP / CDP会话复用 / web-access Skill / TUI三形态 / Git快照回滚 / Prompt分层与模型接入 / 异步任务与RuntimeAPI / 微信iLink通道。
分层架构
text
交互层 Main/CliCommandParser → Renderer 三形态(inline TUI / Lanterna 全屏 / plain)
编排层 Agent(ReAct) · PlanExecuteAgent(DAG) · AgentOrchestrator(Multi-Agent)
能力层 ToolRegistry(16 工具+PathGuard/CommandGuard/HITL/AuditLog) · MemoryManager · SnapshotService · LspManager · SkillRegistry
接入层 LlmClient(OpenAI 兼容五实现) · McpServerManager(Stdio/StreamableHTTP) · EmbeddingClient
渠道层 终端 · RuntimeApiServer(HTTP/SSE) · 微信 iLink架构铁律(CODEAGENT.md 明文):三条执行路径共享 ToolRegistry / MemoryManager / SnapshotService,不为某个模式创建孤立能力——工具、记忆、快照的改进对三种模式同时生效。
23 期演进脉络(每期一个可交付增量)
| 阶段 | 期数 | 能力 |
|---|---|---|
| 打地基 | 1-2 | ReAct 循环 + 基础工具;Plan-and-Execute + DAG |
| 记忆与检索 | 3、5+ | 长期记忆/CODEAGENT.md 注入/压缩;RAG 代码检索与代码库理解 |
| 生态 | 10-11、13-15 | MCP 核心/进阶;Chrome DevTools MCP;CDP 会话复用;Skills 系统 |
| 产品化 | 16-21 | inline 流式 TUI;LSP 诊断注入;Git Side-History 快照回滚;Prompt 分层;异步任务+Runtime API;图片输入 |
| 渠道 | 22-23 | JLine 交互升级;微信 iLink 通道 |
演进顺序本身就是设计判断:先把 ReAct 循环和工具做对,再叠记忆与检索,然后接生态(MCP/Skills),最后做产品化与多渠道。
三条执行模式的关系
- ReAct(默认):单代理循环,适合单步或简单任务;
- Plan-and-Execute(/plan):Planner 产 JSON 计划 → 用户确认(执行/补充重规划/取消)→ DAG 依赖分批执行,单任务内是 5 轮上限的 ReAct 子循环,进度 <0.5 失败触发 replan;
- Multi-Agent:AgentOrchestrator 固定 planner + worker 池 + reviewer,按依赖分批、单步串行保流式观感、reviewer 不通过带 issues 重试 ≤2 次。
选择逻辑:能 ReAct 就 ReAct;任务复杂且步骤可枚举时用 /plan;需要角色分工与质量审查时上 Multi-Agent。
非功能设计
- 测试策略:
mvn clean package默认跳测试优先出可验收 jar;-Pquick快速回归、-Pphase16-smokeTUI 冒烟、CodeSearchGoldenSetTest黄金集守护确定性搜索链路、发版跑全量——按改动范围选测试,不做形式化全量; - 文档联动约束:改行为要同步 AGENTS.md/README/ROADMAP,改工具集要联动 ToolRegistry + 提示词 + 文档——把「文档即约束」写进 CODEAGENT.md;
- 模型无关:LlmClient 接口声明能力(maxContextWindow/promptCaching),五个 OpenAI 兼容瘦实现(GLM/DeepSeek/Step/Kimi/FreeLlm),流式解析统一在模板基类。
把模块和模块之间的依赖关系说一下
“核心模块分六个。”
“CLI 层负责终端交互——命令解析、输入输出、界面渲染,是用户直接接触的入口。”
“Agent 层是核心决策循环。接收用户输入,决定走哪条执行路径——ReAct、Plan、还是 Multi-Agent,驱动整个任务的推进。”
“LLM 层负责模型调用和 prompt 组装。分层拼接 system prompt,管理对话历史,处理流式响应。”
“Tool 层负责工具注册、执行和审批。所有工具统一注册,调用前走安全检查和审批流程,调用后记录审计日志。”
“Memory 层负责长期记忆和项目记忆的存储、检索和注入。”
“Context 层负责上下文压缩和 token 预算管理。对话历史超过窗口上限时自动压缩,保留最近几轮完整交互。”
“依赖关系是:CLI 依赖 Agent,Agent 依赖 LLM、Tool、Memory、Context 四个模块。LLM、Tool、Memory、Context 之间互不依赖,可以独立开发和测试。换模型只改 LLM 层,加工具只改 Tool 层,改记忆策略只改 Memory 层,互不影响。”
八股延伸|介绍一下 CodeAgent CLI 这个项目和流程
介绍一下 CodeAgent CLI 这个项目和流程
“CodeAgent CLI 是一个 Java 17 写的终端 Agent 命令行工具,核心架构是 ReAct 循环。”
用户在终端输入一个任务,CodeAgent CLI 把任务发给大模型,大模型决定要不要调用工具、调哪个、参数是什么。
工具执行完后把结果返回给大模型,大模型再决定下一步动作。直到大模型认为任务完成,返回最终答案。
“CodeAgent CLI 有三种工作模式。”
默认是 ReAct 模式,适合日常的单步任务,改个文件、跑个命令这种。
执行 /plan 会进入 Plan-and-Execute 模式,先把复杂任务拆成多个步骤再逐步执行。
/team 会进入 Multi-Agent 模式,多个 Agent 分工协作。
“工具层面,内置了 16 个工具:文件读写、命令执行、代码搜索、目录浏览、web 搜索、浏览器三件套、Skill 加载、记忆保存、回合回滚等。通过 MCP 协议还可以接入外部工具,比如浏览器操作、数据库查询这些。”